/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.Convenio;
import entidades.DetalleBitacoraSemanal;
import entidades.Estudiante;
import entidades.SeguimientoBitacoraSemanal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;
import negocio.DetalleBitacoraSemanalInterface;
import negocio.SeguimientoBitacoraSemanalInterface;
import org.primefaces.component.datatable.DataTable;


/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FSeguimBitacoraSem implements Formato, Serializable {
    
    private SeguimientoBitacoraSemanal seguimientoBitacoraSemanal = new SeguimientoBitacoraSemanal();
    @EJB
    private SeguimientoBitacoraSemanalInterface seguimientoBitacoraSemanalInterface;
    private String estudianteSelected;
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    @EJB
    private DetalleBitacoraSemanalInterface detalleBitacoraSemanalInterface;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Convenio convenio;
    private Estudiante estudiante = new Estudiante();
    private String seguimientosSemanales;
    private List<DetalleBitacoraSemanal> listaDetalleBitacoraSemanal;
    private DetalleBitacoraSemanal detalleBitacoraSemanal;
    private DataTable htmlDataTableSeguimientos;
    private int index;
    private String hito;
    private String actividad;
    private Date dia;
    private int duracionHoras;
    private String observaciones;
    private String ESTADO_PERIODO = "ACT";
    private boolean renderedBotonGuardar;
    private boolean renderedBotonEditar;
    private boolean renderedBotonImprimir;
       
    public FSeguimBitacoraSem(){
    }
    
    @PostConstruct
    public void inicializarVariables() {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        if (request.getParameter("accionSeguimientoBitacoraSemanal") != null) {
            String accion = (String) request.getParameter("accionSeguimientoBitacoraSemanal");
            if (accion.equals("Consultar")) {
                if (request.getParameter("seguimientoBitacoraSemanal") != null) {
                    seguimientoBitacoraSemanal = seguimientoBitacoraSemanalInterface.consultarSeguimientoBitacoraSemanal(Integer.parseInt(request.getParameter("seguimientoBitacoraSemanal").toString()));
                    estudiante = seguimientoBitacoraSemanal.getConvenioXPeriodoXEstudiante().getEstudiante();
                    listaDetalleBitacoraSemanal = seguimientoBitacoraSemanal.getDetalleBitacoraSemanalList();
                    renderedBotonGuardar = false;
                    renderedBotonEditar = false;
                    renderedBotonImprimir = true;
                }
            } else {
                if (accion.equals("Editar")) {
                    if (request.getParameter("seguimientoBitacoraSemanal") != null) {
                    
                }
                } else {
                    if (accion.equals("Nuevo")) {
                        listaDetalleBitacoraSemanal = new ArrayList<DetalleBitacoraSemanal>();
                        estudiante = new Estudiante();
                        estudiante = sessionBean.getUsuarioSession().getEstudiante();
                        renderedBotonGuardar = true;
                        renderedBotonEditar = false;
                        renderedBotonImprimir = false;
                    }
                }
            }
        }
    }
//    public void inicializarVariables() {
////        convenio = new Convenio();
////        //seguimientoBitacoraSemanal = new SeguimientoBitacoraSemanal();
////        estudiante = new Estudiante();
////        estudiante = sessionBean.getUsuarioSession().getEstudiante();
////        listaDetalleBitacoraSemanal = new ArrayList<DetalleBitacoraSemanal>();
////        detalleBitacoraSemanal = new DetalleBitacoraSemanal();
////        estudiante = new Estudiante();
////        estudiante = sessionBean.getUsuarioSession().getEstudiante();
//    }

    public void cargarCabeceraSeguimiento() {
        //convenio = convenioSession.consultarConvenio(sessionBean.getUsuarioSession().getEstudiante());

    }

    @Override
    public void ConsultarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        
    }

    @Override
    public void DiligenciarFormato() {
        try{
            System.out.println("----------------ingresa al metodo de guardar-------------");
            seguimientoBitacoraSemanal.setConvenioXPeriodoXEstudiante(convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(),ESTADO_PERIODO));
            seguimientoBitacoraSemanal.setIdBitacoraSemanal(seguimientoBitacoraSemanalInterface.obtenerMaxId());
            for(DetalleBitacoraSemanal dbs : listaDetalleBitacoraSemanal){
                dbs.setIdDetalleBitacoraSemanal(detalleBitacoraSemanalInterface.obtenerMaxId()+listaDetalleBitacoraSemanal.indexOf(dbs));
                dbs.setIdBitacoraSemanal(seguimientoBitacoraSemanal);
            }
            seguimientoBitacoraSemanal.setDetalleBitacoraSemanalList(listaDetalleBitacoraSemanal);
            seguimientoBitacoraSemanalInterface.crear(seguimientoBitacoraSemanal);
            FacesMessage facesMessage = new FacesMessage("Datos guardados con éxito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            limpiarcampos();
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    @Override
    public void AprobarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void EditarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    private void limpiarcampos(){
        seguimientoBitacoraSemanal = null;
        listaDetalleBitacoraSemanal = null;
        hito = "";
        dia = null;
        actividad = "";
        duracionHoras = 0;
        observaciones = "";
    }
    
    public void cargarSeguimientos(ActionEvent actionEvent) {
        DetalleBitacoraSemanal detallesBitacoraSemanal = new DetalleBitacoraSemanal(listaDetalleBitacoraSemanal.size(), hito, dia, actividad, duracionHoras, observaciones);
        listaDetalleBitacoraSemanal.add(detallesBitacoraSemanal);
        hito = "";
        dia = null;
        actividad = "";
        duracionHoras = 0;
        observaciones = "";
        
    }
    
     public void quitarSeguimientos(ActionEvent actionEvent) {
        for (int i = 0; i < listaDetalleBitacoraSemanal.size(); i++) {
            if (index == listaDetalleBitacoraSemanal.get(i).getIdDetalleBitacoraSemanal()) {
                listaDetalleBitacoraSemanal.remove(i);
                index = 0;
            }
        }
    }
    
    public void cargarIndice(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("param"));
    }
    

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

     public String cargarInicio() {
        return "Menu";
    }

    public List<DetalleBitacoraSemanal> getListaDetalleBitacoraSemanal() {
        return listaDetalleBitacoraSemanal;
    }

    public void setListaDetalleBitacoraSemanal(List<DetalleBitacoraSemanal> listaDetalleBitacoraSemanal) {
        this.listaDetalleBitacoraSemanal = listaDetalleBitacoraSemanal;
    }

    public DetalleBitacoraSemanal getDetalleBitacoraSemanalSelected() {
        return detalleBitacoraSemanal;
    }

    public void setDetalleBitacoraSemanalSelected(DetalleBitacoraSemanal detalleBitacoraSemanalSelected) {
        this.detalleBitacoraSemanal = detalleBitacoraSemanalSelected;
    }

    public DataTable getHtmlDataTableSeguimientos() {
        return htmlDataTableSeguimientos;
    }

    public void setHtmlDataTableSeguimientos(DataTable htmlDataTableSeguimientos) {
        this.htmlDataTableSeguimientos = htmlDataTableSeguimientos;
    }

    public String getHito() {
        return hito;
    }

    public void setHito(String hito) {
        this.hito = hito;
    }

    public String getActividad() {
        return actividad;
    }

    public void setActividad(String actividad) {
        this.actividad = actividad;
    }

    public Date getDia() {
        return dia;
    }

    public void setDia(Date dia) {
        this.dia = dia;
    }

    public int getDuracionHoras() {
        return duracionHoras;
    }

    public void setDuracionHoras(int duracionHoras) {
        this.duracionHoras = duracionHoras;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public SeguimientoBitacoraSemanal getSeguimientoBitacoraSemanal() {
        return seguimientoBitacoraSemanal;
    }

    public void setSeguimientoBitacoraSemanal(SeguimientoBitacoraSemanal seguimientoBitacoraSemanal) {
        this.seguimientoBitacoraSemanal = seguimientoBitacoraSemanal;
    }

    public boolean isRenderedBotonGuardar() {
        return renderedBotonGuardar;
    }

    public void setRenderedBotonGuardar(boolean renderedBotonGuardar) {
        this.renderedBotonGuardar = renderedBotonGuardar;
    }

    public boolean isRenderedBotonEditar() {
        return renderedBotonEditar;
    }

    public void setRenderedBotonEditar(boolean renderedBotonEditar) {
        this.renderedBotonEditar = renderedBotonEditar;
    }

    public boolean isRenderedBotonImprimir() {
        return renderedBotonImprimir;
    }

    public void setRenderedBotonImprimir(boolean renderedBotonImprimir) {
        this.renderedBotonImprimir = renderedBotonImprimir;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }   
    
    public String getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(String estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }
    
    public String getSeguimientosSemanales() {
        return seguimientosSemanales;
    }

    public void setSeguimientosSemanales(String seguimientosSemanales) {
        this.seguimientosSemanales = seguimientosSemanales;
    }
}
